package com.hmy.finance.service.statement.dto;


import com.hmy.ccp.common.dto.BaseDto;
import com.hmy.finance.api.bo.core.request.enums.StatementActionTypeEnum;
import com.hmy.finance.api.bo.core.request.enums.StatementTypeEnum;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class CreateStatementDto extends BaseDto {

    /**
     * 客户ID
     */
    private Long customerId;

    /**
     * 客户名称（签约人2）
     */
    private String customerName;

    /**
     * 客户联系人
     */
    private Long signatoryId;
    /**
     * 客户联系人名称（签约人1）
     */
    private String signatoryName;

    /**
     * 销售合同ID
     */
    private Long orderContractId;

    /**
     * 销售合同编号
     */
    private String orderContractNo;

    /**
     * 销售经理名称
     */
    private String saleManager;

    /**
     * 签约人手机号
     */
    private String signatoryPhone;

    /**
     * 签约人身份证号
     */
    private String signatoryIdCardNo;

    /**
     * 账单类型:月结、期结、总账单
     * 账单类型:月结、期结、总账单
     * MONTHLY("1", "月结"),
     * PERIODIC("2", "期结"),
     * TOTAL("3", "总账单"),
     * FREE("4", "自由账单");
     * {@link StatementTypeEnum}
     */
    private String statementType;

    /**
     * 账单开始时间
     */
    private LocalDateTime statementStartTime;

    /**
     * 账单结束时间
     */
    private LocalDateTime statementEndTime;

    /**
     * 账单费用周期结束时间
     */
    private LocalDateTime expenseCycleEndTime;

    /**
     * 合同纬度已对账金额
     */
    private BigDecimal reconciliationedAmount = BigDecimal.ZERO;

    /**
     * 操作类型:
     * 1.预览(只生成Excel，不保存，只返回前台)
     * 2.保存(保存账单和Excel地址)
     * 3.客户签署(保存账单和Excel地址、并驱动产生合同)
     * {@link StatementActionTypeEnum}
     */
    private Integer actionType;

    /**
     * Excel中是否展示进场运费
     */
    private Boolean displayEntryShippingFee2Excel = Boolean.TRUE;

    /**
     * Excel中是否展示退场运费
     */
    private Boolean displayModificationFee2Excel = Boolean.TRUE;

    /**
     * 账单备注
     */
    private String mark;

    /**
     * 设备信息
     */
    private List<CreateStatementDeviceDto> deviceDetails;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 销售经理ID
     */
    private Long saleManagerId;

    /**
     * 销售经理姓名
     */
    private String saleManagerName;

    /**
     * 部门ID
     */
    private Long saleManagerDeptId;

}
